package main

import "fmt"

type Stringer interface {
	String() string
}

type MyImplement struct{}

// 实现fmt.Stringer的String方法
func (m *MyImplement) String() string {
	return "hi"
}

func GetStringer() fmt.Stringer {
	var s *MyImplement
	if s == nil {
		fmt.Println("nilnil")
		return nil
	}
	return s
}
func main() {
	// 判断返回值是否为nil
	if GetStringer() == nil {
		fmt.Println("GetStringer() == nil")
	} else {
		//使用 GetStringer() 的返回值与 nil 判断时，虽然接口里的 value 为 nil，但 type 带有 *MyImplement 信息，使用 == 判断相等时，依然不为 nil。
		fmt.Println("GetStringer() != nil")
	}
}
